import { fork, take } from '.'


/**
 * takeEvery 返回一个task对象
 * 不断的监听某个 action，当某个 action 到达之后，运行一个函数。
 * @export
 * @param {*} actionType 
 * @param {*} generator 
 * @param {*} args 其他参数
 * @return {*} 
 */
export function takeEvery(actionType, generator, ...args) {
    // 开启一个新的任务 
    return fork(function* () {
        while (true) {
            const action = yield take(actionType)
            // 为了不阻塞监听，新开启一个任务
            yield fork(generator, ...args.concat(action))
        }
    })
}